1. Da Adição à Multiplicação
Nos frameworks teóricos, transformações lineares e translações (mapas afins) são frequentemente tratadas separadamente. No entanto, bibliotecas de alto desempenho como BLAS (Subrotinas Básicas de Álgebra Linear) são otimizadas especificamente para produtos matriz-vetor e matriz-matriz. Para aproveitar esses kernels, expressamos todas as operações como:
$$T(v) = Av$$
2. Coordenadas Homogêneas
Para implementar um deslocamento em $\mathbf{R}^n$ usando uma matriz, expandimos para $\mathbf{R}^{n+1}$. Um vetor $[x, y, z]^T$ torna-se $[x, y, z, 1]^T$. Esse "1 extra" permite que uma translação seja codificada na última coluna de uma matriz $(n+1) \times (n+1)$.
Uma translação por $v_0 = [t_x, t_y, t_z]^T$ é representada por:
$$A = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}$$
Os números $0, 0, 0, 1$ na última linha desempenham um papel crítico. Quando $A$ multiplica um vetor com um componente final igual a $1$, o componente resultante final é:
$(0 \cdot x) + (0 \cdot y) + (0 \cdot z) + (1 \cdot 1) = 1$
Isso garante que a natureza "afim" dos dados seja preservada, permitindo operações sequenciais sem perder a integridade do sistema de coordenadas.
3. Padrões de Implementação: BLAS
A eficiência numérica depende de subrotinas padronizadas. BLAS fornece três níveis de operações:
- Nível 1: Operações vetor-vetor (por exemplo, produtos escalares).
- Nível 2: Operações matriz-vetor ($Ax+b$).
- Nível 3: Operações matriz-matriz ($AB+C$), que são as mais densas em cálculo e mais eficientes em hardware.